package com.waypolice.common.pdfUtil;

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.waypolice.common.utils.MathUtils;
import com.waypolice.common.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;


import java.io.File;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;

/**
 * ClassName: Extract_Text
 * Function:  提取PDF文件中的文字
 * Date:      2019/8/6 9:47
 * author     yeruixaing
 * QQ:        3141684159
 * version    V1.0
 */
public class Extract_Text {

    /**
     * @return java.lang.String
     * @Author yeruixiang
     * @Description 剥离pdf文件中的汉字并去除空白符
     * @Date 2019/8/6 10:56
     * @Param [fileName]
     **/
    public static String extractUtil(String fileName){
        StringBuilder sb = new StringBuilder();
        String pdfString = null;
        if(!"".equals(fileName) && fileName != null){
            // 创建PdfDocument实例
            PdfDocument doc = new PdfDocument();
            // 加载PDF文件
            doc.loadFromFile(fileName);
            PdfPageBase page;
            if(doc != null){
                // 遍历PDF页面，获取文本
                for (int i = 0; i < doc.getPages().getCount(); i++) {
                    page = doc.getPages().get(i);
                    if(page != null){
                        sb.append(page.extractText(true));
                        // 去除文件中的空白符
//                        sb.toString().replaceAll("\\s", "");
                        pdfString = MathUtils.replaceBlank(sb.toString());
                        pdfString.replaceAll("Evaluation Warning : The document was created with Spire.PDF for Java","");
                    }
                }
            }
            doc.close();
        }
        return pdfString;
    }

    /**
     * @return java.lang.String
     * @Author yeruixiang
     * @Description 剥离pdf文件去除空白符并打印到txt文件中
     * @Date 2019/8/6 10:59
     * @Param [fileName]
     **/
    public static String exportWriterExtractUtil(String fileName) {
        // 创建PdfDocument实例
        PdfDocument doc = new PdfDocument();
        // 加载PDF文件
        doc.loadFromFile(fileName);
        StringBuilder sb = new StringBuilder();
        PdfPageBase page;
        // 遍历PDF页面，获取文本
        for (int i = 0; i < doc.getPages().getCount(); i++) {
            page = doc.getPages().get(i);
            sb.append(page.extractText(true));
            // 去除文件中的空白符
            sb.toString().replaceAll("\\s", "");
        }
        FileWriter writer;
        try {
            File file = new File("PDF");
            if (!file.exists()) {//如果文件夹不存在
                file.mkdir();//创建文件夹
            }
            // 将文本写入文本文件
            writer = new FileWriter("PDF\\ExtractText.txt");
            writer.write(sb.toString());
            writer.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
        doc.close();
        return sb.toString();
    }

    /**
     * @return java.lang.String
     * @Author yeruixiang
     * @Description 剥离pdf文件中的文字不做任何处理
     * @Date 2019/8/6 11:00
     * @Param [fileName]
     **/
    public static String exportPDFUtil(String fileName) {
        // 创建PdfDocument实例
        PdfDocument doc = new PdfDocument();
        // 加载PDF文件
        doc.loadFromFile(fileName);
        StringBuilder sb = new StringBuilder();
        PdfPageBase page;
        // 遍历PDF页面，获取文本
        for (int i = 0; i < doc.getPages().getCount(); i++) {
            page = doc.getPages().get(i);
            sb.append(page.extractText(true));
        }
        doc.close();
        return sb.toString();
    }

    /**
     * @Author yeruixiang
     * @Description //文件删除
     * @Date 2019/8/9 9:41
     * @Param [fileName]
     * @return boolean
     **/
    public static boolean deleteFile(String fileName) {
        File file = new File(fileName);
        // 如果文件路径所对应的文件存在，并且是一个文件，则直接删除
        if (file.exists() && file.isFile()) {
            if (file.delete()) {
                System.out.println("删除单个文件" + fileName + "成功！");
                return true;
            } else {
                System.out.println("删除单个文件" + fileName + "失败！");
                return false;
            }
        } else {
            System.out.println("删除单个文件失败：" + fileName + "不存在！");
            return false;
        }
    }
}
